/**
 * 
 */
package fbv.distribuidora.fornecedor.negocio;

import java.util.Date;
import java.util.Map;

import fbv.commun.dataTools.negocio.ControladorImpl;
import fbv.commun.dataTools.negocio.EntidadeDAO;
import fbv.commun.dataTools.negocio.ObjetoVOIpml;
import fbv.commun.dataTools.servico.EntidadePadrao;
import fbv.commun.dataTools.servico.ObjetoVO;
import fbv.commun.excecoes.FBVException;
import fbv.commun.util.Util;
import fbv.distribuidora.fornecedor.servico.ControladorFornecedor;
import fbv.distribuidora.fornecedor.servico.Fornecedor;

/**
 * @author Lenildo
 *
 */
public class ControladorFornecedorImpl extends ControladorImpl implements ControladorFornecedor{

	
	public ControladorFornecedorImpl() {
		// TODO Auto-generated constructor stub
	}
	
	
	@Override
	protected EntidadeDAO getEntidadeDAO() {
		return FornecedorDAO.getInstancia();
	}

	public Fornecedor criarFornecedor() {
		
		return (Fornecedor) getEntidadeDAO().criarEntidade();
	}

	public static ControladorFornecedor getInstancia() {
		return new ControladorFornecedorImpl();
	}


	/**
	 * @param Map campos 
	 * @throws NumberFormatException
	 * @throws FBVException
	 * @return EntidadePadrao
	 */
	protected EntidadePadrao montarEntidadePadao(Map<String, String> campos) throws NumberFormatException, FBVException {

		Fornecedor fornecedor = criarFornecedor();
		
		if(campos.containsKey(Fornecedor.FORM_FORNECEDOR_ID)){
			fornecedor.setId(Integer.parseInt(campos.get(Fornecedor.FORM_FORNECEDOR_ID)));
		}
		fornecedor.setRazaoSocial(campos.get(Fornecedor.FORM_FORNECEDOR_RAZAO_SOCIAL));
		fornecedor.setCnpj(campos.get(Fornecedor.FORM_FORNECEDOR_CNPJ));
		fornecedor.setEndereco(campos.get(Fornecedor.FORM_FORNECEDOR_ENDERECO_LOGRADOURO),
					campos.get(Fornecedor.FORM_FORNECEDOR_ENDERECO_NUMERO),
					campos.get(Fornecedor.FORM_FORNECEDOR_ENDERECO_CEP),
					campos.get(Fornecedor.FORM_FORNECEDOR_ENDERECO_BAIRRO),
					campos.get(Fornecedor.FORM_FORNECEDOR_ENDERECO_CIDADE),
					campos.get(Fornecedor.FORM_FORNECEDOR_ENDERECO_UF));
		fornecedor.setDataCadastro(new Date(System.currentTimeMillis()));
		
		return fornecedor;
	}


	@Override
	protected ObjetoVO montarObjetoVO(EntidadePadrao entidade) {
		if (entidade == null) {
			throw new IllegalArgumentException("Parametro Nulo");
		}
		ObjetoVO fornecedorVO = new ObjetoVOIpml();
		Fornecedor fornecedor = (Fornecedor) entidade;
		
		if (Util.isCampoPreenchido(fornecedor.getId())){
			fornecedorVO.setChave(fornecedor.getId().toString());
		}
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_CNPJ, fornecedor.getCnpj());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_RAZAO_SOCIAL, fornecedor.getRazaoSocial());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_ENDERECO_LOGRADOURO, fornecedor.getEnderecoLogradouro());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_ENDERECO_NUMERO, fornecedor.getEnderecoNumero());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_ENDERECO_CEP, fornecedor.getEnderecoCEP());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_ENDERECO_CIDADE, fornecedor.getEnderecoCidade());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_ENDERECO_BAIRRO, fornecedor.getEnderecoBairro());
		fornecedorVO.adicinarPropriedade(Fornecedor.FORM_FORNECEDOR_ENDERECO_UF, fornecedor.getEnderecoUF());
							
		return fornecedorVO;
	}
}
